Skip to content

Canonical CI: grouped-tests.yml + root test/test_groups.toml#23

Merged
ChrisRackauckas merged 4 commits into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci
Jun 10, 2026
Merged

Canonical CI: grouped-tests.yml + root test/test_groups.toml#23
ChrisRackauckas merged 4 commits into
SciML:mainfrom
ChrisRackauckas-Claude:grouped-tests-ci

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Collaborator

Summary

Converts the root test workflow to the canonical SciML thin caller of grouped-tests.yml@v1, with the test matrix declared once in a root test/test_groups.toml.

  • CI.yml (the root version/OS matrix workflow): the hand-maintained version × os matrix test job is replaced with the thin caller:
    jobs:
      tests:
        uses: "SciML/.github/.github/workflows/grouped-tests.yml@v1"
        secrets: "inherit"
    on: and concurrency: are preserved verbatim. No with: overrides are needed: runtests.jl reads the default GROUP env var, coverage default src,ext matches this repo (has both src/ and ext/), and check-bounds default is kept.
  • test/test_groups.toml (new):
    • [Core] on ["lts", "1", "pre"] × ["ubuntu-latest", "windows-latest", "macos-latest"]
    • [QA] on ["lts", "1"]

Category B refactor (Aqua/JET were inline)

The old runtests.jl ran the JET.@test_opt static-analysis testset inline in the single ungrouped suite. This PR:

  • Keeps the functional tests (Kernel Functions, Collocation, DataInterpolations extension, Interface Compatibility) in the default group (All/Core).
  • Moves the JET static-analysis testset into a GROUP=="QA"-gated test/qa/qa.jl, isolated in test/qa/Project.toml (JET + Test + DataCollocations via [sources] path = "../..", julia = "1.10"). When GROUP=="QA", runtests.jl activates the QA env, develops the package, instantiates, and includes qa.jl.
  • Project.toml: drops JET from the main [extras]/[targets].test (now isolated in the QA env); adds [compat] entries for all remaining [extras] deps (Documenter, Plots, Test); julia compat already at the 1.10 LTS floor.

Matrix match

Old matrix (single ungrouped suite, 5 cells): ubuntu-latest × {1, lts, pre}, plus 1.10 on windows-latest and macOS-latest.

New emitted matrix (computed via compute_affected_sublibraries.jl --root-matrix, 11 cells):

  • Core: {lts, 1, pre} × {ubuntu, windows, macos} = 9
  • QA: {lts, 1} on ubuntu = 2

The ubuntu functional coverage is reproduced exactly (lts/1/pre). OS coverage is preserved and broadened: the old workflow ran windows/macos only on 1.10, which is this package's lts (julia = "1.10"), so the Core lts cells on windows/macos reproduce the old 1.10 cells, with 1/pre added on those OSes as a superset (the TOML group model multiplies version × OS). JET coverage is preserved as the dedicated QA group on lts+1.

Notes

QA group newly wired; Aqua/JET run in CI — any failures will be triaged in follow-up.

Ignore until reviewed by @ChrisRackauckas.

🤖 Generated with Claude Code

ChrisRackauckas and others added 4 commits June 9, 2026 17:57
Convert the root test workflow (CI.yml) to the canonical thin caller of
SciML/.github grouped-tests.yml@v1, with the version/group/OS matrix declared
once in test/test_groups.toml.

- CI.yml: replace the hand-maintained version x os matrix test job with the
  thin grouped-tests.yml@v1 caller; on:/concurrency: preserved verbatim.
- test/test_groups.toml: Core on [lts, 1, pre] x [ubuntu, windows, macos];
  QA on [lts, 1].
- Category B refactor: JET static analysis moved out of the inline runtests.jl
  into a GROUP=="QA"-gated test/qa/qa.jl, isolated in test/qa/Project.toml
  (JET + Test + DataCollocations via [sources] path = "../..", julia = "1.10").
  Functional tests stay in the default (All/Core) group; runtests.jl activates
  the qa env and develops the package when GROUP=="QA".
- Project.toml: drop JET from the main [extras]/[targets].test (now isolated in
  the QA env); add [compat] entries for all remaining [extras] deps
  (Documenter, Plots, Test); julia compat already at the 1.10 LTS floor.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped runtests.jl uses Pkg for the QA group's Pkg.activate, but
the Core group runs with project='.' (the root test env). Pkg was not a
declared test dependency, so the Core job died with
ArgumentError: Package Pkg not found in current path. Declare Pkg in
[extras] and add it to [targets].test.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grouped-tests conversion removed functional test dependencies from the
root test environment while isolating QA, breaking the Core group. Re-add
the deps that the pre-conversion base test target listed (using their base
UUIDs) so Core resolves and @testset/@safetestset/domain macros are defined.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…Error

The converted runtests.jl placed `using` statements inside a top-level
`if GROUP ...` block that also used a macro (e.g. @testset) inline. Julia
macro-expands the entire if block as one unit before the in-block `using`
executes, so the macro was undefined (UndefVarError: @testset not defined
in Main). Move the functional usings to top level (the QA-subenv usings
that follow Pkg.activate stay in the QA block).

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ChrisRackauckas ChrisRackauckas marked this pull request as ready for review June 10, 2026 09:43
@ChrisRackauckas ChrisRackauckas merged commit 950fbd2 into SciML:main Jun 10, 2026
2 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants